Many networking systems consist of communication controllers which are connected via channel adapters to host data processors. Such communication controllers which are also equipped with communication adapters which provide access by means of telephone connections to other communication controllers, cluster controllers and user terminals. In addition to one or more channel adapters for connection to a host, a typical communication controller has a Central Control Unit (CCU), a main memory and a Bus Control Unit (BCU). Once a channel adapter is started by the CCU to transfer or receive data to or from a host, respectively, the adapter accesses the main memory directly to perform the transfer. To accomplish the transfer, the CCU executes instructions that reside in the main memory to control the channel adapters to perform the actual data transfer. As the channel adapter performs its work, it periodically interrupts the CCU.
Many different types of communications controllers have been used in the past to transfer data to and from a host. The interface between a communications controller and the host generally takes the following form. The host, when it is ready, issues either a read or write command to the controller, which causes an interrupt of the CCU. Assuming that the command is a write, for example, data in the form of one or more messages is then transferred from the host, via a channel adapter, to the CCU. The host signals end of message (EOM) at the end of each message and signals end of transmission (EOT) after all messages available at that time are transferred. In the channel adapters in use today, the channel adapter interrupts the CCU at intermediate points of a message transfer to allow the CCU to send status messages to the host. At the end of a message transfer, a channel adapter again interrupts the CCU to allow the CCU to send a final status message to the host. During the actual transfer of a message, the channel adapter further interrupts the CCU a number of times to allow it to process intermediate data received during a message write from the host or to prepare further data for transmission to the host during a message read transfer. The number of such interrupts depends on the particular type of channel adapter involved, as further described below.
To accomplish the above protocol between a communications controller and a host, the interface between a CCU and a channel adapter has taken a number of forms in the prior art. For example, IBM offers or has offered six different types of channel adapters for use in different ones of its communications controllers, such as the 3725 and 3745 controllers. The Type 1 channel adapter interrupts the CCU after receiving or sending each buffer of four bytes. This is in addition to the initial and status interrupts mentioned above. This is an inexpensive hardware design, since most of the functions are coded in the CCU software. More important, however, is that the type 1 adapter creates a very large number of interrupts to the CCU.
The types 4, 5 and 6 channel adapters improve the operation of the type 1 adapter by increasing the size of a buffer from a maximum of 4 bytes to a maximum of 256 bytes. However, the potential number of interrupts is still large and remains a limitation on performance.
The Type 2 channel adapter uses a list of control words to allow a chain of buffers to be transferred before interrupting the CCU. The control words are linked to each other by the requirement that the list has to reside in contiguous memory and are accessed in consecutive order. Each control word includes a data address of a buffer for a corresponding block of transferred data and a count of bytes to be transferred from or to the buffer. In addition, the buffers themselves include pointers for creating a buffer linked list for individual messages and another linked list for individual messages. The CCU administers the list of control words and the channel adapter administers the lists of buffers and messages. Contiguous words of the control word list may point to the same buffer, depending on the size of the buffer and the number of bytes to be transferred under control of the control word. Thus, the CCU deals with the list of control words to maintain the order of byte transfer, while the channel adapter deals with the buffer and message linked lists. The type 2 channel adapter is expensive in terms of hardware, because most of its functions are implemented in hardware. The number of interrupts of a CCU is reduced over the types 1 and 4 through 6 because of the linking of control words. However, there is still a substantial amount of CCU processing consumed in responding to the need for status interrupts to a host. In addition, an excessive amount of CCU processing power is consumed because of the need to administer the control word list.
The Type 3 channel adapter provides two physical paths between a host and communications controller and uses the same linking of control words as the Type 2 channel adapter. This adapter improves the type 2 adapter because of the additional capacity added by the second path. However, the CCU still suffers from the same limitations of administering control word lists and responding to status interrupts.
The reader is referred to the following references for additional details of the operation of prior art communication controllers:
"IBM System/360 and System/370 I/O Interface Channel to Control Unit Original Equipment Manufacturers Information", GA22-6974, IBM Corporation; PA1 "IBM 3745 Communication Controller Principles of Operation", SA33-0102, IBM Corporation; PA1 "IBM 3725 Communication Controller Principles of Operation", GA33-0013, IBM Corporation; PA1 "IBM 3704, 3705-I, 3705-II, Communication Controller Principles of Operation", GC30-3004, IBM Corporation; and PA1 "Systems Network Architecture: Formats"; Publicaiton GA27-3136; 1987; International Business Machines Corporation.